﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
// 汉诺塔问题
//⻘蛙跳台阶问题
//阿克曼(Ackmann)函数,请你计算阿克曼函数的几个整数定义域的结果。
//定义一个函数 digit(x,i):表示分离出 x 的后 i 位的数字




// 汉诺塔问题
//n = 1: A -> C
//n = 2: A -> B   A -> C   B -> C
//n = 3: A -> C	  A -> B   C -> B   A -> C   B -> A   B -> C   A -> C	
//void move(char x, char y)
//{
//	printf(" %c -> %c ", x, y);
//}
////n : 盘子数量
////pos1：起始位置
////pos2：中转位置
////pos3：终止位置
//void hannuota(int n, char pos1, char pos2, char pos3)
//{
//	if (n == 1)
//	{
//		move(pos1, pos3);
//	}
//	else
//	{
//		hannuota(n - 1, pos1, pos3, pos2);
//		move(pos1, pos3);
//		hannuota(n - 1, pos2, pos1, pos3);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);		//盘子的数量
//	hannuota(n, 'A', 'B', 'C');
//	return 0;
//}



//⻘蛙跳台阶问题
//共n阶台阶，每次可走一个或两个，共有几种方法
//int jump(int n)
//{
//	if (n <= 2)
//	{
//		return n;
//	}
//	else
//	{
//		return jump(n - 1) + jump(n - 2);
//	}
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = jump(n);
//	printf("%d\n", ret);
//	return 0;
//}



//阿克曼(Ackmann)函数,请你计算阿克曼函数的几个整数定义域的结果。
//int Ackmann(int n, int m)
//{
//	if (m == 0)
//	{
//		return n + 1;
//	}
//	else if (n == 0)
//	{
//		return Ackmann(m - 1, 1);
//	}
//	else
//	{
//		return Ackmann(m - 1, Ackmann(m, n - 1));
//	}
//}
//int main()
//{
//	int n = 0;
//	int m = 0;
//	scanf("%d%d", &n, &m);
//	int ret = Ackmann(n, m);
//	printf("%d\n", ret);
//	return 0;
//}



//定义一个函数 digit(x,i):表示分离出 x 的后 i 位的数字
//如输入 23908 3 输出 908
//int digit(int x, int i)
//{
//	if (i == 1)
//	{
//		return x % 10;
//	}
//	else
//	{
//		return digit(x / 10, i - 1) * 10 + x % 10;
//	}
//}
//int main()
//{
//	int x = 0;
//	int i = 0;
//	scanf("%d%d", &x, &i);
//	int ret = digit(x, i);
//	printf("%d\n", ret);
//	return 0;
//}